--- a/configure
+++ b/configure
@@ -7107,7 +7107,7 @@
 echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6
 if test "$cross_compiling" = yes; then
    cat >>confdefs.h <<\_ACEOF
-#define RETURN_MACROS_WORK 0
+#define RETURN_MACROS_WORK 1
 _ACEOF
  echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
--- a/return.h
+++ b/return.h
@@ -106,26 +106,16 @@
 /*************************************/
 
 /*
- * For DEC Mips machines running Ultrix
+ * For Mips machines running Linux
  */
 #if __mips
 
 /*
- * I have no idea how to get inline assembly with the default cc.
- * Anyone know how?
- */
-
-#if 0
-
-/*
  * NOTE: we assume here that file is global.
  *
- * $31 is the frame pointer.  $2 looks to be the return address but maybe
- * not consistently.
+ * $31 is the return address.
  */
-#define GET_RET_ADDR(file)	asm("sw $2, file")
-
-#endif
+#define GET_RET_ADDR(file)	asm("sw $31, %0" : "=m" (file))
 
 #endif /* __mips */
 
